package com.ruoyi.fitsculpt.domain;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.common.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;

/**
 * 运动计划对象 easyfit_exercise_plans
 *
 * @author metaee
 * @date 2025-02-27
 */
@ApiModel("运动计划对象")
public class EasyfitExercisePlans extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 计划ID
     */
    @ApiModelProperty("计划ID")
    @Excel(name = "计划ID")
    private Long planId;

    /**
     * 用户ID
     */
    @ApiModelProperty("用户ID")
    @Excel(name = "用户ID")
    private Long userId;

    /**
     * 目标ID
     */
    @ApiModelProperty("目标ID")
    @Excel(name = "目标ID")
    private Long goalId;

    /**
     * 计划名称
     */
    @ApiModelProperty("计划名称")
    @Excel(name = "计划名称")
    private String planName;

    /**
     * 1:力量训练 2:有氧运动 3:瑜伽
     */
    @ApiModelProperty("1:力量训练 2:有氧运动 3:瑜伽")
    @Excel(name = "1:力量训练 2:有氧运动 3:瑜伽")
    private Long planType;

    /**
     * 1:初级 2:中级 3:高级
     */
    @ApiModelProperty("1:初级 2:中级 3:高级")
    @Excel(name = "1:初级 2:中级 3:高级")
    private Long difficultyLevel;

    /**
     * 开始日期
     */
    @ApiModelProperty("开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /**
     * 结束日期
     */
    @ApiModelProperty("结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /**
     * 1:进行中 2:已完成 3:已终止
     */
    @ApiModelProperty("1:进行中 2:已完成 3:已终止")
    @Excel(name = "1:进行中 2:已完成 3:已终止")
    private Long status;

    /** 关联的用户信息 */
    @TableField(exist = false)
    private EasyfitUsers user;

    public Long getPlanId() {
        return planId;
    }

    public void setPlanId(Long planId) {
        this.planId = planId;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Long getGoalId() {
        return goalId;
    }

    public void setGoalId(Long goalId) {
        this.goalId = goalId;
    }

    public String getPlanName() {
        return planName;
    }

    public void setPlanName(String planName) {
        this.planName = planName;
    }

    public Long getPlanType() {
        return planType;
    }

    public void setPlanType(Long planType) {
        this.planType = planType;
    }

    public Long getDifficultyLevel() {
        return difficultyLevel;
    }

    public void setDifficultyLevel(Long difficultyLevel) {
        this.difficultyLevel = difficultyLevel;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public Long getStatus() {
        return status;
    }

    public void setStatus(Long status) {
        this.status = status;
    }

    public EasyfitUsers getUser() {
        return user;
    }

    public void setUser(EasyfitUsers user) {
        this.user = user;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("planId", getPlanId())
                .append("userId", getUserId())
                .append("goalId", getGoalId())
                .append("planName", getPlanName())
                .append("planType", getPlanType())
                .append("difficultyLevel", getDifficultyLevel())
                .append("startDate", getStartDate())
                .append("endDate", getEndDate())
                .append("status", getStatus())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
